#!/bin/sh -e
#
#    wifi_quality: display wifi signal quality
#
#    Copyright (C) 2008 Canonical Ltd.
#    Copyright (C) 2011 Dustin Kirkland
#
#    Authors: Dustin Kirkland <kirkland@byobu.co>
#
#    This program is free software: you can redistribute it and/or modify
#    it under the terms of the GNU General Public License as published by
#    the Free Software Foundation, version 3 of the License.
#
#    This program is distributed in the hope that it will be useful,
#    but WITHOUT ANY WARRANTY; without even the implied warranty of
#    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
#    GNU General Public License for more details.
#
#    You should have received a copy of the GNU General Public License
#    along with this program.  If not, see <http://www.gnu.org/licenses/>.

__wifi_quality_detail() {
	/sbin/iwconfig 2>/dev/null
}

__wifi_quality() {
	local out bitrate quality
	# iwconfig is expected to output lines like:
	#    Bit Rate=54 Mb/s   Tx-Power=15 dBm
	#    Link Quality=60/70  Signal level=-50 dBm
	# the awk below tokenizes the output and prints shell evalable results
	out=`iwconfig $MONITORED_NETWORK 2>/dev/null |
		awk '$0 ~ /[ ]*Link Quality./ {
   sub(/.*=/,"",$2); split($2,a,"/");
   printf "quality=%.0f\n", 100*a[1]/a[2] };
   $0 ~ /[ ]*Bit Rate/ { sub(/.*=/,"",$2); printf("bitrate=%s\n", $2); }
   '`
	eval "$out"
	[ -z "$bitrate" ] && bitrate="0"
	if [ -z "$quality" ] || [ "$quality" = "0" ]; then
		quality="0"
	fi
	[ -n "$quality" ] || return
	[ "$quality" = "0" ] && return
	printf "${ICON_WIFI}"; color b C k; printf "%s" "$bitrate"; color -; color C k; printf "%s" "$ICON_MBPS"; color -; color b C k; printf "%s" "$quality"; color -; color C k; printf "%s" "$PCT"; color --
}

# vi: syntax=sh ts=4 noexpandtab
